# use variables:
#   swap_file_size_mb
#   swap_file_path

- name: Touch an empty file that we will use for swap
  copy:
    content: ""
    dest: "{{ swap_file_path }}"
    force: no
  register: swap_touch

- name: On BTRFS we need NoCOW
  file:
    path: "{{ swap_file_path }}"
    attr: +C
  when: swap_touch.changed

- name: Create swap file
  command:
    cmd: "dd if=/dev/zero of={{ swap_file_path }} bs=1024 count={{ swap_file_size_mb }}k"
  when: swap_touch.changed
  tags:
    - swap.file.create
    - swap

- name: Change swap file permissions
  file: path="{{ swap_file_path }}"
        owner=root
        group=root
        mode=0600
  tags:
    - swap.file.permissions
    - swap

- name: Check swap file type
  command: file {{ swap_file_path }}
  register: swapfile
  changed_when: False
  tags:
    - swap.file.mkswap
    - swap

- name: Make swap file
  filesystem:
    fstype: swap
    dev: "{{ swap_file_path }}"
  when: swapfile.stdout.find('swap file') == -1
  tags:
    - swap.file.mkswap
    - swap

- name: Write swap entry in fstab
  mount: path=none
         src={{ swap_file_path }}
         fstype=swap
         opts=sw
         passno=0
         dump=0
         state=present
  register: swap_fstab_added
  tags:
    - swap.fstab
    - swap

- name: Mount swap
  command: "swapon -a"
  #when: ansible_swaptotal_mb|int < 1
  when: swap_fstab_added.changed
  tags:
    - swap.file.swapon
    - swap
  notify: restart swap.swap

- name: Start swap.swap service
  service: state=started enabled=yes name="swap.swap"
